Verifying Fence Elimination Optimisations
نویسندگان
چکیده
We consider simple compiler optimisations for removing redundant memory fences in programs running on top of the x86-TSO relaxed memory model. While the optimisations are performed using standard thread-local control flow analyses, their correctness is subtle and relies on a non-standard global simulation argument. The implementation and the proof of correctness are programmed in Coq as part of CompCertTSO, a fully-fledged certified compiler from a concurrent extension of a C-like language to x86 assembler. In this article, we describe the soundness proof of the optimisations and evaluate their effectiveness.
منابع مشابه
Extraction and Elimination of parallel obstacles for image restoration
We propose a technique for extracting and remove a fence region in a still image. The proposed method uses the fact that the fence region consists of periodic and parallel straight lines in a space. Characteristic of parallel and periodic lines in an image is used for the fence parallel to the image plane. Property of a projection of periodic parallel lines in a space is used for the other case...
متن کاملProgram transformations in weak memory models
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the DRF guarantee and the Java Memory Model. Unlike in the single-threaded world, even simple program transformations, such as common subexpression elimination, can introduce new behaviours in shared-memory multi-threading with an interleaved semantics. To validate such optimisations, most current pr...
متن کاملModular Control-Flow Analysis with Rank 2 Intersection Types
The performance of optimising compilers crucially depends on the availability of controlflow information at compile time. For any first-order imperative program, such information is available via a flowchart constructed from the program text. Consequently, traditional dataflow analyses can be used to perform a series of compile-time program optimisations (Aho et al. 1986). For higher-order prog...
متن کاملCompositional Verification of Compiler Optimisations on Relaxed Memory
A valid compiler optimisation transforms a block in a program without introducing new observable behaviours to the program as a whole. Deciding which optimisations are valid can be difficult, and depends closely on the semantic model of the programming language. Axiomatic relaxed models, such as C++11, present particular challenges for determining validity, because such models allow subtle effe...
متن کاملWhen can we do better than autarky?
This paper provides a necessary and sufficient condition for the existence of nonautarkic contract in a risk sharing model with two-sided lack of commitment. Verifying the condition takes just one Gaussian elimination of a matrix. Published by Elsevier B.V.
متن کامل